| Opis |
|---|
| Łączy materiały o tej samej podstawowej nazwie (z różnymi końcówkami numerycznymi, np. 001, 002, ...) w jeden. Zachowany zostanie tylko pierwszy materiał, a wszystkie obiekty powiązane z duplikatami zostaną przypisane do tego pierwszego. Przed użyciem tego makra upewnij się więc, że pierwszy materiał (ten bez końcówki numerycznej lub o najniższym numerze) jest właściwy. Macro version: 2.0 Last modified: 2019-07-12 FreeCAD version: All Download: Ikona paska narzędzi Autor: yorik |
| Autor |
| yorik |
| Do pobrania |
| Ikona paska narzędzi |
| Odnośniki |
| Przepisy na makropolecenia Jak zainstalować makrodefinicje Dostosowanie pasków narzędzi |
| Wersja Makrodefinicji |
| 2.0 |
| Data zmian |
| 2019-07-12 |
| Wersja FreeCAD |
| All |
| Domyślny skrót |
| Brak |
| Zobacz również |
| - |
Łączy materiały o tej samej podstawowej nazwie (z różnymi końcówkami numerycznymi, np. 001, 002, ...) w jeden. Zachowany zostanie tylko pierwszy materiał, a wszystkie obiekty powiązane z duplikatami zostaną przypisane do tego pierwszego. Przed użyciem tego makra upewnij się więc, że pierwszy materiał (ten bez końcówki numerycznej lub o najniższym numerze) jest właściwy.
Merge duplicate materials.FCMacro
import FreeCAD,FreeCADGui
mats = [o for o in FreeCAD.ActiveDocument.Objects if o.isDerivedFrom("App::MaterialObject")]
todelete = []
for mat in mats:
if mat.Label[-1].isdigit() and mat.Label[-2].isdigit() and mat.Label[-3].isdigit():
orig = None
for om in mats:
if om.Label == mat.Label[:-3].strip():
orig = om
break
if orig:
for par in mat.InList:
for prop in par.PropertiesList:
if getattr(par,prop) == mat:
print( "Changed property '"+prop+"' of object "+par.Label+" from "+mat.Label+" to "+orig.Label)
setattr(par,prop,orig)
todelete.append(mat)
for tod in todelete:
if not tod.InList:
print( "Deleting material "+tod.Label)
FreeCAD.ActiveDocument.removeObject(tod.Name)
elif (len(tod.InList) == 1) and (tod.InList[0].isDerivedFrom("App::DocumentObjectGroup")):
print( "Deleting material "+tod.Label)
FreeCAD.ActiveDocument.removeObject(tod.Name)
else:
print( "Unable to delete material "+tod.Label+": InList not empty")